The present disclosure describes systems and techniques relating to metadata management for pools of storage disks.
A storage server system, such as a SAN (Storage Area Network) or NAS (Network-Attached Storage), has the primary purpose of providing shared storage that can be accessed by computers attached to the server through a network. A typical storage server is designed to serve as storage to many (10s or 100s or even 1000s) computers.
Modern storage servers provide virtualized storage to its users in the form of “virtual volumes”. A virtual volume hides the way the physical storage is organized and presents a uniform, virtually contiguous storage to the outside world. In other words, what a computer attached to the storage server sees as a physically contiguous space is really composed of many physically disparate chunks of storage. The virtual volume concept provides flexibility to the storage server in order to serve as storage to many computers.
In order to provide the virtualized view to the outside world, the storage server maintains metadata that translates the virtualized storage to its physical counterpart. For example, for each virtual volume, the storage server can employ a tree structure, such as a B-Tree, to keep track of the metadata that translates from an address in the virtual volume to an address in that virtual volume's physical counterpart. The multiple physically disparate chunks of storage that can be included in the virtual volume's physical counterpart may be disks or disk partitions aggregated together as redundant array of inexpensive disks (RAID) devices. Such RAID devices can be exported as logical disks to users associated with the RAID devices.
Logical disks, which are managed using identical RAID properties, represent a pool of storage disks. For example, a storage pool can contain one or more logical disks that have identical RAID properties viz. RAID1/RAID0, numbers of stripe members, and the like. Notably, the storage pool can be expanded on a need basis by adding more disks (which are) aggregated into new logical disk(s) of the storage pool. Such storage pools can be used to allocate storage space to the virtual volumes. Adding storage on-demand in the fashion described above is referred to as virtual volume “provisioning”.